#include "../src/comqueue/comqueue.h"

/* 声明底层链表的函数库 */
extern func_ComQueue fun_ComQueue;

#define CAPACITY 10

int main(int argc, const char *argv[])
{
    int i = 0;
    int a[CAPACITY] = {0};
    int b[CAPACITY] = {0};
    ComQueue *queue = fun_ComQueue.create(CAPACITY);
    if (queue == NULL)
        return -1;

    // 压队列, 首次入队列 10 个数字。
    printf("\n入队数据为 ：");
    for (i = 0; i < 10; i++)
    {
        a[i] = i + 1;
        fun_ComQueue.append(queue, &a[i]);
        printf("%d\t", a[i]);
    }
    printf("\n");

    printf("最大容量为 ：%d\n", fun_ComQueue.capacity(queue));
    printf("目前长度为 ：%d\n", fun_ComQueue.length(queue));
    printf("队头数据为 ：%d\n", *((int *)fun_ComQueue.header(queue)));
    printf("\n");

    printf("出队数据为 ：");
    i = 0;
    while (i < 5)
    {
        i++;
        printf("%d\t", *((int *)fun_ComQueue.subtract(queue)));
    }
    printf("\n\n");

    printf("最大容量为 ：%d\n", fun_ComQueue.capacity(queue));
    printf("目前长度为 ：%d\n", fun_ComQueue.length(queue));
    printf("队头数据为 ：%d\n", *((int *)fun_ComQueue.header(queue)));
    printf("\n");

    // 压队列, 首次入队列 10 个数字。
    printf("入队数据为 ：");
    for (i = 0; i < 10; i++)
    {
        b[i] = (i + 2) * 10;
        fun_ComQueue.append(queue, &b[i]);
        printf("%d\t", a[i]);
    }
    printf("\n");

    printf("最大容量为 ：%d\n", fun_ComQueue.capacity(queue));
    printf("目前长度为 ：%d\n", fun_ComQueue.length(queue));
    printf("队头数据为 ：%d\n", *((int *)fun_ComQueue.header(queue)));
    printf("\n");

    printf("出队数据为 ：");
    i = 0;
    while (fun_ComQueue.length(queue) > 0)
    {
        i++;
        printf("%d\t", *((int *)fun_ComQueue.subtract(queue)));
    }

    printf("\n");

    return 0;
}
